﻿///@author Rafał Hazan
///@email  rafal.hazan@gmail.com
#ifndef __GRAPH_BUILDER__
#define __GRAPH_BUILDER__

#include <iostream>
#include <sstream>
#include <vector>
#include <map>
#include <exception>
#include <cmath>
#include <queue>
#include <algorithm>
#include <stack>

#include "MatrixGraph.h"

/// Budowniczy grafów.
class GraphBuilder
{
public:
    virtual ~GraphBuilder() throw();
	/// @return graf wczytany z wejscia
	MatrixGraph* buildFromFile(std::ifstream & input);

private:
	/// @return pierwszy wiersz wejscia, by moc potem znalezc rozmiar grafu.
	std::vector<MatrixGraph::V> getFirstRow(std::ifstream & input);
};

#endif